from meiduo_mall.utils import meiduo_json
from django_redis import get_redis_connection
# 购物车的合并，在登陆后才进行如下操作
def merge_cart_cookie_to_redis( request, response):
    user = request.user
    cookie_cart_str = request.COOKIES.get('cart')
    # 如果从购物车拿到的数据为空直接给个响应返回
    if cookie_cart_str is None:
        return response
    # 将cookie拿到的数据转化为字典
    cookie_cart_dict = meiduo_json.loads(cookie_cart_str)
    # 链接reids数据库,创建多任务执行的对象
    redis_cli = get_redis_connection('carts')
    redis_pl = redis_cli.pipeline()
    # 遍历字典，拿到sku_id　和　count

    # sku_id:{'count':count} 从cookie取的数据
    for sku_id, cart in cookie_cart_dict.items():
        # 从hash中添加数据,直接覆盖redis的数据
        redis_pl.hset('cart%d' % user.id, sku_id, cart['count'])
        if cart['selected']:
            redis_pl.sadd('selected%d' % user.id, sku_id)
        # 从集合中添加数据,如果选中添加，如果没有选中删除
        else:
            redis_pl.srem('selected%d' % user.id, sku_id)

    redis_pl.execute()
    # 清除cookie
    response.delete_cookie('cart')

    return response
#
# 购物车的合并逻辑,
# 1,读取cookie 的数据，判断cookie 的数据是否为空,返回响应,反之链接redis数据库，建立任务的执行
# ２,遍历得到单个sku_id 和count ，将数据以字典的形式添加到hash中储存
# ３判断是否选中，选中则将数据添加到redis的set中，没有选中直接删除，　最后删除购物车的数据
